﻿using System;

namespace 数独
{
    class Program
    {
        static void Main()
        {
            DateTime start = DateTime.Now;
            Console.WriteLine("求解开始");

            char[,] board = { { '5', '3', '.', '.', '7', '.', '.', '.', '.' }, { '6', '.', '.', '1', '9', '5', '.', '.', '.' }, { '.', '9', '8', '.', '.', '.', '.', '6', '.' }, { '8', '.', '.', '.', '6', '.', '.', '.', '3' }, { '4', '.', '.', '8', '.', '3', '.', '.', '1' }, { '7', '.', '.', '.', '2', '.', '.', '.', '6' }, { '.', '6', '.', '.', '.', '.', '2', '8', '.' }, { '.', '.', '.', '4', '1', '9', '.', '.', '5' }, { '.', '.', '.', '.', '8', '.', '.', '7', '9' } };
            Print(board);
            Console.WriteLine();
            Solution solution = new();
            solution.SolveSudoku(board);
            Print(solution.board);


            Console.WriteLine("求解结束");
            DateTime end = DateTime.Now;
            Console.WriteLine($"耗时:{(end - start).TotalMilliseconds}毫秒");
        }

        static void Print(char[,] board)
        {
            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    Console.Write(board[i,j] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
}
